mybatis查找的结果集对象中包含对象和集合的用法 您所在的位置:网站首页 mybatis 嵌套查询给子集加过滤条件 mybatis查找的结果集对象中包含对象和集合的用法

mybatis查找的结果集对象中包含对象和集合的用法

2024-07-13 14:06| 来源: 网络整理| 查看: 265

平时项目中使用mybatis查询数据库,对象结果集可能比较复杂,对象中嵌套对象或者集合。

如下图所示,返回结果集对象project中包含其他子对象(查询的主表与关联子表数据一对一关系)和list集合(查询的主表与关联子表数据一对多关系):

解决方案:

对象下面嵌套的对象采用写法,嵌套的集合采用写法

写法实例:

(1)其中projectInfo与projectCharge对象为Project的嵌套对象,采用写法,而requires是list集合,采用写法

                                                                                                                                                                                                

SQL写法:

(2)写法不变,中采用ofType属性指向集合中的元素类型

                                                                                                                                                                                                    

SQL写法:

(3)projectInfo与projectCharge对象仍然采用写法,requires采用内部嵌套查询方式

                                                                                                                                                                                                    

对应的sql片段:

注意:这里嵌套的查询getProjectRequire查询中parameterType采用Map,标签中的column多个参数写法也需按照上述规范,=左边的是getProjectRequire这个方法中的入参名称,==右边是getProjectDetail这个查询方法中的查询出来对应的字段名称。另外,结果集中各个标签顺序也是有规定的:(constructor?, id*, result*, association*, collection*, discriminator?),不按照这个规定,编译会报错

三种写法的比较:

通过日志打印sql发现,其中第一种和第二种写法都只查询了一次sql,第三种查询了两次sql,但是用的是一个sql连接,并不是新建一个sql连接,所以性能上差别不大,但是第三种写法明显复杂不少,推荐第一种和第二种写法。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有